Перейти к основному содержимому

7.05. Брокеры сообщений

Разработчику Архитектору Инженеру

Брокеры сообщений

Брокер сообщений — это программное обеспечение или система, которая управляет обменом данными между приложениями, сервисами или системами. Брокер выступает в роли посредника, который принимает сообщения от «производителей» (producers) и передаёт их «потребителям» (consumers). Это позволяет организовать асинхронную связь между компонентами системы.

Производитель отправляет сообщение в брокер и продолжает свою работу, не дожидаясь ответа от потребителя, а брокер гарантирует доставку сообщений даже в случае сбоев (например, через очереди и подтверждения) и позволяет распределять нагрузку между несколькими потребителями, что упрощает масштабирование.

Среди брокеров различают RabbitMQ (модель очередей), Apache Kafka (модель топиков), ActiveMQ (классический брокер сообщений с поддержкой JMS), IBM MQ и Redis (который также используется для кэширования).

Мы рассмотрим RabbitMQ и Kafka по отдельности. Для начала давайте разграничим

КритерийRabbitMQKafka
АрхитектураОснована на очередях (queues)Основана на топиках (topics) с партициями (partitions)
Модель работыПроизводитель → Обменник (Exchange) → Очередь → ПотребительПроизводитель → Топик → Партиция → Потребитель
УпорядоченностьГарантируется порядок в пределах одной очередиГарантируется порядок только внутри одной партиции
Состояние данныхСообщения хранятся до доставки или истечения времени храненияСообщения хранятся на диске в течение заданного времени (например, 7 дней)
ПроизводительностьДо десятков тысяч сообщений в секундуДо миллионов сообщений в секунду
ЗадержкиНизкие задержки благодаря прямой передаче через очередиЗадержки выше из-за партиционирования и логической структуры
РесурсыТребует меньше ресурсов для небольших нагрузокТребует больше памяти и дискового пространства
МасштабируемостьМасштабируется за счёт добавления брокеров, но кластеризация сложнее в настройкеЛегко масштабируется за счёт добавления брокеров и партиций
Гарантия доставкиГарантированная доставка каждого сообщенияДоставка "хотя бы один раз" (at-least-once delivery)
МаршрутизацияПоддерживает сложные правила маршрутизации через обменники (exchanges)Маршрутизация ограничена топиками и партициями
Веб-интерфейсВстроенный веб-интерфейс (RabbitMQ Management)Отсутствует встроенное решение; используются сторонние инструменты
Сценарии использованияФоновые задачи, микросервисы, системы уведомленийПотоковая аналитика, логирование, мониторинг, IoT
Примеры задачОтправка email, обработка заказов, рассылка уведомленийСбор и анализ логов, мониторинг событий, обработка данных в реальном времени